﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace proyectoENS
{
    public class DALAlumnos
    {
        private static proyectoENSEntities db = new proyectoENSEntities();

        public static int newAlumno(Alumnos unAlumno)
        {
            if (unAlumno != null)
            {
                db.Alumnos.AddObject(unAlumno);
                db.SaveChanges();
                return unAlumno.id;
            }
            return -1;
        }
        //Listar Alumons
        public static List<Alumnos> getAlumnos()
        {
            List<Alumnos> lista = (from a in db.Alumnos
                                   select a).ToList<Alumnos>();
            return lista;
        }
        //Metdos de busqueda
        public static List<Alumnos> getAlumnosByDni(string dni)
        {
            var lista = (from a in db.Alumnos
                         where a.dni.StartsWith(dni)
                         select a).ToList<Alumnos>();
            return lista;
        }

        public static List<Alumnos> getAlumnosByApellidos(string apellido)
        {
            var lista = (from a in db.Alumnos
                         where a.Apellidos.StartsWith(apellido)
                         select a).ToList<Alumnos>();
            return lista;
        }

        //public static List<Alumnos> getAlumnosByApeMaterno(string apellido)
        //{
        //    var lista = (from a in db.Alumnos
        //                 where a.apellidoMaterno.StartsWith(apellido)
        //                 select a).ToList<Alumnos>();
        //    return lista;
        //}
        public static List<Alumnos> getAlumnosByIdCurso(int idCurso)
        {
            var lista = (from a in db.Alumnos
                         join ac in db.alumnosXcursos
                         on a.id equals ac.idAlumno
                         where ac.idCurso == idCurso
                         select a).Distinct().ToList<Alumnos>();
            return lista;
        }

        //Listar Alumnos que no se han asignado a ningun curso
        public static List<Alumnos> getAlumnosSinCursoAsignado()
        {
            var lista = (from a in db.Alumnos
                         where !(from ac in db.alumnosXcursos
                                 select ac.idAlumno).Contains(a.id)
                         select a).ToList<Alumnos>();
            return lista;
        }

        public static int editAlumno(Alumnos unAlumno)
        {
            var temp = (from a in db.Alumnos
                    where a.dni == unAlumno.dni
                    select a).FirstOrDefault<Alumnos>();
            temp.Apellidos = unAlumno.Apellidos;
            temp.barrio = unAlumno.barrio;
            temp.direccion = unAlumno.direccion;
            temp.fechaNac = unAlumno.fechaNac;
            temp.nombres = unAlumno.nombres;
            temp.sexo = unAlumno.sexo;
            return db.SaveChanges();

        }

        public static Cursos getCursoByAlumno(Alumnos alumno)
        {
            Cursos var = (from ac in db.alumnosXcursos
                            join c in db.Cursos
                            on ac.idCurso equals c.idCurso
                            where ac.idAlumno == alumno.id
                       select c).FirstOrDefault<Cursos>();
            return var;
        }
        public static Alumnos getAlumnoByIdAlumno(int idAlumno)
        {
            Alumnos tmp = (from a in db.Alumnos
                           where a.id == idAlumno
                           select a).FirstOrDefault<Alumnos>();
            if (tmp != null)
                return tmp;
            else
                return null;
        }
        public static List<Alumnos> getAlumnosConExamenesByIdAlumno()
        {
            List<Alumnos> lista = new List<Alumnos>();
            List<Examenes> pendientes = DALExamenes.getExamenesPendientes();
            foreach (Examenes item in pendientes)
            {
              Alumnos tmp = (from a in db.Alumnos
                           where a.id == item.idAlumno
                           select a).FirstOrDefault<Alumnos>();
              lista.Add(tmp);
            }
            return lista;
        }

    }
}
